package com.bjpowernode.boss.common.utils;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import org.springframework.beans.factory.annotation.Value;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * jwt工具类
 *
 * @author yu
 * @date 2024/7/7  11:34
 */

public class JwtUtil {
    /**
     * 声明一个秘钥
     */
    // @Value("${jwt.secret}")
    private static final String secret = "W0fd3)iYp@uy34dsb/0OT";

    public static String generateToken(String payload, int timeoutMinute) {
        // 组装头数据
        Map<String, Object> header = new HashMap<>() ;
        header.put("alg", "HS256") ;
        header.put("typ", "JWT") ;

        // 设置过期时间
        DateTime expiresDate = DateUtil.offsetMinute(new Date(), timeoutMinute) ;

        return JWT
                .create()
                // 头部
                .withHeader(header)

                // 过期时间
                .withExpiresAt(expiresDate)

                // 负载
                .withClaim("data", payload)

                // 签名
                .sign(Algorithm.HMAC256(secret));
    }
}
